import { Injectable } from '@angular/core';
import { Observable, of, delay } from 'rxjs';
import { 
  ChatMessage, 
  AIResponse, 
  GenerateDescriptionRequest,
  AIRequestConfig 
} from '../models/ai.model';

@Injectable({
  providedIn: 'root'
})
export class AiService {
  private apiKey = '';  // 在实际项目中，应该从环境变量或后端获取
  private apiEndpoint = '';  // AI API 端点

  constructor() {}

  /**
   * 发送聊天消息到 AI
   * 注意：这是 Mock 实现，实际项目中需要对接真实的 AI API
   */
  chat(messages: ChatMessage[], config?: AIRequestConfig): Observable<AIResponse> {
    // Mock 响应 - 实际项目中替换为真实 API 调用
    return this.getMockResponse(messages[messages.length - 1].content).pipe(
      delay(1500) // 模拟网络延迟
    );
  }

  /**
   * 生成商品描述
   */
  generateProductDescription(request: GenerateDescriptionRequest): Observable<string> {
    const prompt = this.buildDescriptionPrompt(request);
    
    // Mock 实现
    return this.getMockProductDescription(request).pipe(
      delay(2000)
    );
  }

  /**
   * 获取搜索建议
   */
  getSearchSuggestions(query: string): Observable<string[]> {
    // Mock 实现
    return this.getMockSearchSuggestions(query).pipe(
      delay(500)
    );
  }

  /**
   * 构建商品描述生成的提示词
   */
  private buildDescriptionPrompt(request: GenerateDescriptionRequest): string {
    return `请为以下商品生成一段吸引人的商品描述（100-150字）：
商品名称：${request.name}
商品分类：${request.category}
价格：¥${request.price}
${request.stock ? `库存：${request.stock}件` : ''}

要求：
1. 突出商品特点和优势
2. 语言生动，吸引消费者
3. 包含使用场景
4. 专业且易懂`;
  }

  /**
   * Mock 聊天响应
   * 实际项目中替换为：
   * return this.http.post<AIResponse>(this.apiEndpoint, { messages, ...config })
   */
  private getMockResponse(userMessage: string): Observable<AIResponse> {
    const responses: { [key: string]: string } = {
      '你好': '你好！我是电商后台管理系统的 AI 助手，很高兴为您服务。我可以帮您：\n\n1. 生成商品描述\n2. 提供操作指导\n3. 分析数据趋势\n4. 回答系统使用问题\n\n请问有什么可以帮您的吗？',
      '如何添加商品': '添加商品很简单！请按以下步骤操作：\n\n1. 点击页面左上角的"添加商品"按钮\n2. 在弹出的表单中填写商品信息：\n   - 商品名称（必填）\n   - 分类（必填）\n   - 价格（必填）\n   - 库存（必填）\n   - 状态（上架/下架）\n   - 描述（可选，也可以让我帮您生成）\n3. 点击"提交"按钮保存\n\n💡 小提示：您可以使用"AI 生成描述"功能自动生成商品描述哦！',
      '如何编辑商品': '编辑商品步骤如下：\n\n1. 在商品列表中找到要编辑的商品\n2. 点击该商品行右侧的"编辑"按钮\n3. 在弹出的表单中修改商品信息\n4. 点击"提交"保存修改\n\n所有字段都可以修改，修改后会立即生效。',
      '如何删除商品': '删除商品的步骤：\n\n1. 在商品列表中找到要删除的商品\n2. 点击该商品行右侧的"删除"按钮\n3. 在确认对话框中点击"确认"\n\n⚠️ 注意：删除操作不可恢复，请谨慎操作！',
      '如何搜索商品': '搜索商品非常简单：\n\n1. 在页面右上角的搜索框中输入关键词\n2. 系统会实时过滤显示匹配的商品\n3. 支持按商品名称或分类搜索\n\n💡 小提示：清空搜索框可以显示所有商品。',
      '如何切换语言': '切换语言的方法：\n\n1. 点击页面右上角的语言选择器\n2. 选择"简体中文"或"English"\n3. 页面会立即切换到所选语言\n\n系统支持中英文双语，您的语言偏好会被保存。'
    };

    // 智能匹配响应
    let response = '我理解您的问题了。';
    
    for (const [key, value] of Object.entries(responses)) {
      if (userMessage.includes(key)) {
        response = value;
        break;
      }
    }

    // 默认响应
    if (response === '我理解您的问题了。') {
      if (userMessage.includes('商品') || userMessage.includes('产品')) {
        response = '关于商品管理，我可以帮您：\n\n1. 添加新商品\n2. 编辑商品信息\n3. 删除商品\n4. 搜索商品\n5. 生成商品描述\n\n请告诉我您具体想做什么，我会详细指导您。';
      } else if (userMessage.includes('帮助') || userMessage.includes('怎么')) {
        response = '我是您的 AI 助手，可以帮您：\n\n📦 商品管理\n- 添加、编辑、删除商品\n- 生成商品描述\n- 搜索和筛选\n\n🌐 系统功能\n- 多语言切换\n- 操作指导\n- 功能说明\n\n请告诉我您需要什么帮助？';
      } else {
        response = `感谢您的提问！关于"${userMessage}"，我会尽力帮助您。\n\n如果您需要：\n- 商品管理操作指导\n- 生成商品描述\n- 系统功能说明\n\n请随时告诉我！`;
      }
    }

    return of({
      content: response,
      usage: {
        promptTokens: userMessage.length,
        completionTokens: response.length,
        totalTokens: userMessage.length + response.length
      }
    });
  }

  /**
   * Mock 商品描述生成
   */
  private getMockProductDescription(request: GenerateDescriptionRequest): Observable<string> {
    const templates: { [key: string]: string } = {
      '电子产品': `${request.name}是一款高品质的电子产品，采用先进技术打造，性能卓越。无论是日常使用还是专业工作，都能为您提供流畅稳定的体验。精致的外观设计，搭配人性化的操作界面，让科技与美学完美融合。现价仅需¥${request.price}，性价比超高，是您不可错过的优质选择。`,
      '配件': `${request.name}是您设备的完美搭档。精选优质材料，经过严格品控，确保每一件产品都达到高标准。不仅能提升使用体验，更能有效保护您的设备。简约而不简单的设计，适配多种使用场景。¥${request.price}的亲民价格，让品质生活触手可及。`,
      '服装': `${request.name}采用优质面料，穿着舒适透气。精湛的剪裁工艺，完美贴合身形，展现您的独特气质。无论是日常穿搭还是特殊场合，都能让您自信满满。时尚百搭的设计，轻松驾驭多种风格。现价¥${request.price}，让您以实惠的价格享受品质生活。`,
      '食品': `${request.name}精选优质原料，采用传统工艺与现代技术相结合的方式制作。口感醇正，营养丰富，是您健康生活的好选择。严格的质量把控，确保每一份产品都新鲜安全。无论是自己享用还是馈赠亲友，都是不错的选择。¥${request.price}的价格，让美味与健康兼得。`,
      '图书': `《${request.name}》是一本值得细细品读的好书。内容丰富，见解独到，能够开拓视野，启迪思维。无论您是专业人士还是兴趣爱好者，都能从中获得宝贵的知识和灵感。精美的装帧，优质的印刷，让阅读成为一种享受。现价¥${request.price}，投资知识，投资未来。`
    };

    const description = templates[request.category] || 
      `${request.name}是一款优质商品，精心设计，品质保证。适合多种使用场景，是您的理想选择。现价¥${request.price}，物超所值，欢迎选购！`;

    return of(description);
  }

  /**
   * Mock 搜索建议
   */
  private getMockSearchSuggestions(query: string): Observable<string[]> {
    const allSuggestions = [
      'iPhone 15 Pro',
      'MacBook Pro 14',
      'AirPods Pro 2',
      'iPad Air',
      'Apple Watch Series 9',
      '电子产品',
      '配件',
      '服装',
      '食品',
      '图书'
    ];

    const filtered = allSuggestions.filter(s => 
      s.toLowerCase().includes(query.toLowerCase())
    ).slice(0, 5);

    return of(filtered);
  }

  /**
   * 实际项目中对接真实 AI API 的示例代码（注释掉）
   */
  /*
  private callRealAI(messages: ChatMessage[]): Observable<AIResponse> {
    // OpenAI API 示例
    const headers = {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${this.apiKey}`
    };

    const body = {
      model: 'gpt-3.5-turbo',
      messages: messages.map(m => ({
        role: m.role,
        content: m.content
      })),
      temperature: 0.7,
      max_tokens: 500
    };

    return this.http.post<any>('https://api.openai.com/v1/chat/completions', body, { headers })
      .pipe(
        map(response => ({
          content: response.choices[0].message.content,
          usage: response.usage
        }))
      );
  }
  */
}
